package com.sunspring.zdcall.mapper.master;


import com.sunspring.zdcall.dto.ClientDto;
import com.sunspring.zdcall.entity.ZdBaseClient;
import com.sunspring.zdcall.entity.ZdClientLogin;
import com.sunspring.zdcall.param.ClientParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author XJ
 * @Date 2018/11/27  15:35
 */
public interface ClientMapper {

    /**
     * 根据查询参数获取客户端
     * @param clientId 客户端ID（MAC号）
     * @return ClientDto
     */
    ZdBaseClient selectByClientId(String clientId);

    /**
     * 客户端注册
     * @param zdBaseClient ZdBaseClient实体参数
     * @return 受影响行数
     */
    //todo 参数确定
    int insertSelective(ZdBaseClient zdBaseClient);

    /**
     * 批量新增客户端和检查室的映射
     * @param clientId 客户端Id
     * @param array 检查室Id集合
     * @return 受影响行数
     */
    int insertBatchCheckRoomMapping(@Param("clientId") String clientId, @Param("array") String[] array);

    /**
     * 新增客户端和科室的映射
     * @param clientId 客户端Id
     * @param baseDeptId 科室Id
     * @return 受影响行数
     */
    int insertDeptMapping(@Param("clientId") String clientId, @Param("baseDeptId") String baseDeptId);

    /**
     * 更新客户端和检查室的映射
     * @param clientId 客户端Id
     * @param baseCheckRoomId 检查室Id
     * @return 受影响行数
     */
    int updateCheckRoomMapping(@Param("clientId") String clientId, @Param("baseCheckRoomId") String baseCheckRoomId);

    /**
     * 更新客户端和科室的映射
     * @param clientId 客户端Id
     * @param baseDeptId 科室Id
     * @return 受影响行数
     */
    int updateDeptMapping(@Param("clientId") String clientId, @Param("baseDeptId") String baseDeptId);


    /**
     * 根据客户端ID查看客户端数量
     * @param clientId 客户端Id
     * @return 受影响行数
     */
    int selectCountByClientId(String clientId);

    /**
     * 更新客户端信息
     * @param zdBaseClient ZdBaseClient
     */
    int updateSelective(ZdBaseClient zdBaseClient);

    /**
     * 根据客户端ID删除所有科室Id和客户端Id的映射
     * @param clientId 客户端ID
     * @return 受影响行数
     */
    int deleteCheckroomMappingByClientId(String clientId);


    /**
     * 查询客户端状态
     * @param clientId 客户端ID
     * @return 客户端状态
     */
    Integer selectStateByClientId(String clientId);

    /**
     * 更新客户端状态
     * @param clientId 客户端ID
     * @param stateId 状态Id
     * @return 客户端状态
     */
    int updateStateByClientId(@Param("clientId") String clientId,@Param("stateId") Integer stateId);

    /**
     * 新增客户端日志
     * @param clientLogin 客户端日志
     * @return 受影响行数
     */
    int insertClientLog(ZdClientLogin clientLogin);


    /**
     * 条件查询
     * @param clientParam ClientParam条件参数
     * @return List<ClientInfoBo>
     */
    List<ClientDto> selectAll(ClientParam clientParam );
}
